import org.bytedeco.ffmpeg.global.avcodec;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.FFmpegFrameRecorder;
import org.bytedeco.javacv.Frame;

public class RTMPSenderFromFile {
    public static void main(String[] args) {
        String inputFile = "input.mp4"; // 本地视频文件
        String rtmpUrl = "rtmp://localhost/live/stream"; // RTMP 服务器地址

        try (FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFile);
             FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(rtmpUrl, grabber.getImageWidth(), grabber.getImageHeight())) {

            // 初始化 FrameGrabber
            grabber.start();

            // 初始化 FrameRecorder
            recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); // 使用 H.264 编码
            recorder.setFormat("flv"); // RTMP 使用 FLV 格式
            recorder.setFrameRate(grabber.getFrameRate());
            recorder.start();

            System.out.println("Started streaming to " + rtmpUrl);

            Frame frame;
            while ((frame = grabber.grab()) != null) { // 读取视频帧
                recorder.record(frame); // 推送视频帧到 RTMP 服务器
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}